A malfunction in a hardware module can be caused by various external influences, like electrostatic discharge (ESD) pulses, electrical glitches, power shortages, etc. External influences may alter for example the values of registers of the hardware module or required voltage levels within the hardware module.
Such a malfunction in a hardware module can usually be removed by means of a hardware reset.
Conventionally, the values of identity (ID) registers and of status registers of a hardware module are read by an external software and compared to expected values, in order to recognize a possible hardware failure requiring a hardware reset. If a hardware failure is detected in this comparison, all registers of the hardware module are updated. This approach has the disadvantage, however, that extensive information about the internal functionality of the hardware module has to be known. The internal status of a hardware module is frequently very complex and thus difficult to verify by software. Some failure mechanisms cannot be found at all by means of a software check.
Further, the module may fail completely. In this case, the module may not be able to answer any software request before a hardware reset is performed. The internal functionality of the module may also be disturbed inasmuch as no information can be gained anymore from outside, which prevents equally a status check by the software.
Therefore, the hardware registers are usually updated in addition at regular intervals defined by module internal watchdog timers, in order to prevent a failure which is not detected by the software. A regular hardware reset, however, has the disadvantage that it might be annoying to a user noticing some kind of regular interruption in a function provided by the hardware module.